登录 白背景

leetcode/100-n/223. 矩形面积.md

https://leetcode-cn.com/problems/rectangle-area/
提交日期是,2019/08/25 01:31,之前写的现在补充进来

class area:
    
    def __init__(self,a,b,c,d):
        self.arr = {}
        self.arr['left'] = a #left
        self.arr['bottom'] = b #bottom
        self.arr['right'] = c #right
        self.arr['top'] = d #top
    
    #计算面积
    def calcArea(self):
        chang = abs(self.arr['right'] - self.arr['left'])
        gao = abs(self.arr['top'] - self.arr['bottom'])
        return chang * gao
    
    #两个矩形相交的面积
    def calcOverlap(self,ar):
        if ar.arr['left'] >= self.arr['right'] or ar.arr['right'] <= self.arr['left']:
            return 0
        if ar.arr['bottom'] >= self.arr['top'] or ar.arr['top'] <= self.arr['bottom']:
            return 0
        
        xlist = [ar.arr['left'],ar.arr['right'],self.arr['left'],self.arr['right']]
        ylist = [ar.arr['top'],ar.arr['bottom'],self.arr['top'],self.arr['bottom']]
        
        xlist.sort()
        ylist.sort()
        
        area_ = area(xlist[1],ylist[1],xlist[2],ylist[2])
        return area_.calcArea()
        
class Solution:
    def computeArea(self, A: int, B: int, C: int, D: int, E: int, F: int, G: int, H: int) -> int:
        areaA = area(A,B,C,D)
        areaB = area(E,F,G,H)
        #计算重叠面积
        areaC = areaA.calcOverlap(areaB)

        return areaA.calcArea() + areaB.calcArea() - areaC